package com.kfm.am;

import java.util.Random;
import java.util.Scanner;

public class Exec02 {

    public static void main(String[] args) {
        //实现随机产生验证码，验证码的每位可能是数字、大写字母、小写字母。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要获取的验证码位数：");
        int n = sc.nextInt();
        System.out.println("生成的随机验证码是：" + randCaptcha(n));
    }

    /**
     * 生成n位随机验证码
     *
     * @param n 要生成的验证码位数
     * @return 生成的验证码
     */
    public static String randCaptcha(int n) {
        Random random = new Random();
        String captcha = "";
        for (int i = 0; i < n; i++) {
            // 随机英文字母 大写还是小写 生成大写字母  [65, 90]
            int type = random.nextInt(3); // [0,3) 数字
            int number = switch (type) {
                case 0 -> random.nextInt(26) + 65; // 大写
                case 1 -> random.nextInt(26) + 97; // 小写
                default -> random.nextInt(10);     // 数字
            };

            // += 会有一个强制类型转换
            captcha = type == 2 ? captcha+ number : captcha + (char) number;
//            char upperLetter = (char) (random.nextInt(26) + 65);  // [65, 91) 大写字母
//            char lowerLetter = (char) (random.nextInt(26) + 97);  // [97, 123) 小写字母
//            password = password + upperLetter + lowerLetter + number; // Aa8
        }
//        char[] chars = captcha.toCharArray();
//        for (int i = 0; i < chars.length; i++) {
//            int index = random.nextInt(chars.length);
//            char temp = chars[i];
//            chars[i] = chars[index];
//            chars[index] = temp;
//        }
        return captcha;
    }
}
